Progress 组件 API 文档
本文档由 DeepSeek R1
模型生成并微调。
核心特性
- 动态进度显示:支持 0.0~1.0 范围的进度可视化
- 双色样式分离:可分别定制已完成/未完成部分样式
- 精准定位:支持像素级坐标控制
- 平滑过渡:数值变化自动触发重绘
Props 属性说明
属性名 | 类型 | 默认值 | 描述 |
---|---|---|---|
loc | ElementLocator | 必填 | 进度条容器坐标 |
progress | number | 必填 | 当前进度值(0.0~1.0) |
success | CanvasStyle | green | 已完成部分填充样式 |
background | CanvasStyle | gray | 未完成部分填充样式 |
lineWidth | number | 2 | 进度条线宽(像素) |
使用示例
基础用法
tsx
import { defineComponent, ref } from 'vue';
import { onTick } from '@motajs/client';
export const MyCom = defineComponent(() => {
// 创建响应式进度值
const loadingProgress = ref(0);
// 模拟进度更新
onTick(() => {
if (loadingProgress.value < 1) {
loadingProgress.value += 0.002;
}
});
return () => (
<Progress
loc={[20, 20, 200, 8]} // x=20, y=20, 宽200px, 高8px
progress={loadingProgress.value}
/>
);
});
自定义样式
tsx
// 自定义进度条的已完成和未完成部分的样式
<Progress
loc={[50, 100, 300, 12]}
progress={0.65}
success="rgb(54, 255, 201)"
background="rgba(255,255,255,0.2)"
lineWidth={6}
/>
垂直进度条
tsx
// 通过旋转容器实现垂直效果,注意锚点的使用
<container rotation={-Math.PI / 2} loc={[100, 200, 150, 8, 0.5, 0.5]}>
<Progress loc={[0, 0, 150, 8]} progress={0.8} success="#FF5722" />
</container>
动画效果实现
平滑过渡示例
tsx
import { pow } from 'mutate-animate';
const progressValue = transitioned(0, 2000, pow(2, 'out'));
progressValue.set(1); // 2秒内完成二次曲线平滑过渡
return () => (
<Progress loc={[0, 0, 400, 10]} progress={progressValue.ref.value} />
);
注意事项
坐标系统
实际渲染高度由loc[3]
参数控制,会自动上下居中:tsx// 情况1:显式指定高度为8px <Progress loc={[0, 0, 200, 8]} />